package com.wanjia.bpsapi.util;

import com.wanjia.bpsapi.constant.JsonResultState;
import com.wanjia.bpsapi.pojo.model.JsonResult;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;

@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class JsonResultUtil {

    /**
     * 构建通用结果模型
     *
     * @param state 结果状态
     * @param t     结果
     * @param <T>   结果类型
     * @return 通用结果模型
     */
    public static <T> JsonResult<T> generate(JsonResultState state, T t) {
        return new JsonResult<>(state.getState(), state.getMsg(), t);
    }

    /**
     * 构建成功结果模型（空
     *
     * @param <T> 结果类型
     * @return 通用结果模型（空
     */
    public static <T> JsonResult<T> success() {
        return success(null);
    }

    /**
     * 构建成功结果模型
     *
     * @param t   结果
     * @param <T> 结果类型
     * @return 通用结果模型
     */
    public static <T> JsonResult<T> success(T t) {
        return generate(JsonResultState.SUCCESS, t);
    }
}
